﻿<h1>Go程序优化101</h1>

<p>
本书将列出一些Go编程中的一些性能优化技巧和建议。
大致包括以下几方面的内容：
</p>

<ul>
<li>如何消耗更少的CPU资源；</li>
<li>如何消耗更少的内存；</li>
<li>如何减少内存开辟；</li>
<li>如何控制内存开辟位置；</li>
<li>如何降低垃圾回收压力等。</li>
</ul>

<div id="ebooks" class="alert alert-success row item-row">
	<div class="col-xs-12 col-sm-3 text-center" style="font-size: small;">
		<img src="res/cover-1000x.jpg" style="width: 160px;" alt="Go优化101"></img>
		<p>（约150页，75+优化建议）</p>
	</div>
	<div class="col-xs-12 col-sm-9" style="padding-top: 6px;"><small>

		<p>
		本书目前尚未免费阅读。
		请在微信中搜素“Go 101“或者扫描<a href="/">本网站首页</a>中展示的公众号二维码关注“Go 101”微信公众号。
		该微信公众号将时不时地免费放出一些章节。
		</p>

		<p>
		从2016年7月开始，老貘（本书作者）开始编写《Go语言101》丛书和维护此Go101.org网站。
		目前，各种改进和新的内容仍在源源不断地加入本丛书和此网站。
		你的赞赏是本系列丛书和Go101.org网站不断增容和维护的动力。
		</p>

		<p>
		赞赏二维码和其它联系信息见<a href="#contact">页底</a>。
		</p>
		
		<p>
		感谢Olexandr Shalakhin授权使用<a href="https://github.com/shalakhin/gophericons">这些可爱的地鼠图片</a>。
		其中一张图片使用在本书的封面中。
		</p>

		<p>
		The English version of this book is available
		<a href="https://go101.org/optimizations/101.html">here</a>.
		</p>
		
	</small></div>
</div>

<div>

<h3>目录：</h3>

<!-- index starts (don't remove) -->

<div id="book-index">
	
<ul class="index part">
	<li><a class="index" href="0.0-acknowledgements.html">致谢</a></li>
	<li><a class="index" href="0.1-introduction.html">关于《Go程序优化101》</a></li>
	<li>值部和值尺寸</li>
	<ul>
		<li>值尺寸</li>
		<li>内存对齐</li>
		<li>结构体字节填充</li>
		<li>避免大复制成本</li>
	</ul>
	<li>内存分配</li>
	<ul>
		<li>内存块和内存分配区域</li>
		<li>如何减少内存分配量和次数</li>
	</ul>
	<li>栈、堆和逃逸分析</li>
	<ul>
		<li>逃逸分析</li>
		<li>如何控制内存分配区域</li>
		<li>栈增长和收缩</li>
		<li>如何降低栈增长次数</li>
	</ul>
	<li>垃圾回收</li>
	<ul>
		<li>垃圾回收步幅控制</li>
		<li>如何降低垃圾回收压力</li>
		<li>控制垃圾回收频率</li>
	</ul>
	<li>指针</li>
	<ul>
		<li>3 事实和建议</li>
	</ul>
	<li>结构体</li>
	<ul>
		<li>3 事实和建议</li>
	</ul>
	<li>数组和切片</li>
	<ul>
		<li>11 事实和建议</li>
	</ul>
	<li>字符串和字节切片</li>
	<ul>
		<li>10 事实和建议</li>
	</ul>
	<li>边界检查消除（Bound Check Eliminate，BCE）</li>
	<ul>
		<li>BCE起作用的情形</li>
		<li>BCE不起作用的情形</li>
		<li>BCE需要给出暗示才能起作用的情形</li>
	</ul>
	<li>映射</li>
	<ul>
		<li>7 事实和建议</li>
	</ul>
	<li>通道</li>
	<ul>
		<li>3 事实和建议</li>
	</ul>
	<li>函数</li>
	<ul>
		<li>如何尽量使一个函数可被内联</li>
		<li>如何使一个函数不可被内联</li>
		<li>指针和非指针参数对性能的影响</li>
		<li>具名和匿名返回结果对性能的影响</li>
		<li>10+ 事实和建议</li>
	</ul>
	<li>接口</li>
	<ul>
		<li>值装箱成本</li>
		<li>3+ 事实和建议</li>
	</ul>
</ul>


</div>

<!-- index ends (don't remove) -->

</div>
